Gage locations

USGS2 and DS2 have the same coordinates. USGS1 and DS3 have the same coordinates.

Hydrographs

Notes on gages: So far DS2 and DS3 have not been used. US1 and DS1 are mostly point measurements.

Streamflow differencing between each gage

DS1 minus US1 (uppermost)

Average DS1 minus US1 difference

## [1] 0.03090149
Year Avg streamflow difference (m3/s)
2011 0.0232853
2012 0.0138214
2013 0.0334710
2014 0.0497037
2015 0.0665000
2016 NaN
2017 NaN
2018 NaN
2019 NaN
2020 NaN

USGS2 minus DS1

Average USGS2 minus DS1 difference

## [1] 0.04210856
Year Avg streamflow difference (m3/s)
2011 0.0363444
2012 0.0106020
2013 0.0944612
2014 NaN
2015 NaN
2016 NaN
2017 NaN
2018 NaN
2019 NaN
2020 NaN

USGS1 minus USGS2

Average USGS1 minus USGS2 difference

## [1] -0.0001941755
Year Avg streamflow difference (m3/s)
2011 -0.0231274
2012 0.0108739
2013 0.0138716
2014 NaN
2015 NaN
2016 NaN
2017 NaN
2018 NaN
2019 NaN
2020 NaN

Sum of losses between USGS1 and USGS2

Year Month Monthly sum of losses (m3/s)
2011 4 -0.3270991
2011 5 -1.0456047
2011 6 -3.5999679
2011 7 0.0700276
2011 8 0.6986662
2011 9 -0.0434309
2012 4 1.9742787
2012 5 0.4860510
2012 6 0.1782581
2012 8 0.2018424
2012 9 -0.0854056
2013 5 2.4741706
2013 6 -0.5456931
2013 7 -0.3966977
2013 8 -0.5607375

Incorporating pumping

Precip

Compare Niwot SNOTEL precip to prism pixel

niwot_prism <- read.csv(here('data', 'niwot_prism_compare.csv')) %>% 
  filter(!row_number() %in% c(1:10)) %>%
   rename(date = 1,
          prism_mm = 2) %>%
   mutate(date = ymd(date),
          prism_mm = as.numeric(prism_mm))

niwot_snotel <- prec_update %>%
  dplyr::select(c(date, Niwot_Snotel)) %>%
  rename(snotel_mm = Niwot_Snotel) %>%
  mutate(date = dmy(date))

niwot_compare <- full_join(niwot_prism, niwot_snotel, by = 'date')

niwot_compare <- niwot_compare %>%
  mutate(diff_mm = snotel_mm - prism_mm) %>%
  na.omit()

rmse(niwot_compare$prism_mm, niwot_compare$snotel_mm)
## [1] 5.491975
pbias(niwot_compare$prism_mm, niwot_compare$snotel_mm)
## [1] 1.8
scatter <- ggplot(niwot_compare, aes(x=snotel_mm, y=prism_mm)) +
  geom_point() +
  geom_abline(intercept = 0, slope = 1, size=1.5, color="blue")
  
ggplotly(scatter)
#filter to look at sept - june
niwot_winter_comp <- niwot_compare %>%
  mutate(month = month(date)) %>%
  filter(!month %in% c(6:8))

summary(niwot_winter_comp)
##       date               prism_mm        snotel_mm         diff_mm         
##  Min.   :2011-01-01   Min.   : 0.000   Min.   : 0.000   Min.   :-63.69000  
##  1st Qu.:2012-10-24   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: -1.21000  
##  Median :2014-05-17   Median : 0.410   Median : 0.000   Median :  0.00000  
##  Mean   :2014-06-27   Mean   : 2.613   Mean   : 2.577   Mean   : -0.03675  
##  3rd Qu.:2016-03-09   3rd Qu.: 2.910   3rd Qu.: 3.000   3rd Qu.:  0.94000  
##  Max.   :2017-12-31   Max.   :68.220   Max.   :58.000   Max.   : 41.32000  
##      month       
##  Min.   : 1.000  
##  1st Qu.: 3.000  
##  Median : 5.000  
##  Mean   : 6.358  
##  3rd Qu.:10.000  
##  Max.   :12.000
niwot_prismshift <- niwot_compare %>%
  mutate_at(c("prism_mm"), funs(lead), n = 1) %>%
  mutate(month = month(date)) %>%
  #filter(!month %in% c(6:8)) %>%
  mutate(diff_mm = snotel_mm - prism_mm)

summary(niwot_prismshift)
##       date               prism_mm        snotel_mm         diff_mm         
##  Min.   :2011-01-01   Min.   : 0.000   Min.   : 0.000   Min.   :-17.15000  
##  1st Qu.:2012-10-01   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: -0.30250  
##  Median :2014-07-02   Median : 0.305   Median : 0.000   Median :  0.00000  
##  Mean   :2014-07-02   Mean   : 2.437   Mean   : 2.393   Mean   : -0.04274  
##  3rd Qu.:2016-04-01   3rd Qu.: 2.712   3rd Qu.: 3.000   3rd Qu.:  0.00000  
##  Max.   :2017-12-31   Max.   :68.220   Max.   :71.000   Max.   : 13.21000  
##                       NA's   :1                         NA's   :1          
##      month       
##  Min.   : 1.000  
##  1st Qu.: 4.000  
##  Median : 7.000  
##  Mean   : 6.522  
##  3rd Qu.:10.000  
##  Max.   :12.000  
## 
rmse(niwot_prismshift$prism_mm, niwot_prismshift$snotel_mm)
## [1] NA
NSE(niwot_prismshift$prism_mm, niwot_prismshift$snotel_mm)
## [1] 0.9033148
pbias(niwot_prismshift$prism_mm, niwot_prismshift$snotel_mm)
## [1] 1.8
scatter_shiftday <- ggplot(niwot_prismshift, aes(x=snotel_mm, y=prism_mm)) +
  geom_point() +
  geom_abline(intercept = 0, slope = 1, size=1.5, color="blue")
  
ggplotly(scatter_shiftday)
niwot_prismfrac <- niwot_compare %>%
  mutate(prism_most_mm = prism_mm * 0.974,
         prism_little_mm = prism_mm * 0.026) %>%
  mutate_at(c('prism_most_mm'), list(lead), n = 1) %>%
  mutate(prism_new_mm = prism_most_mm + prism_little_mm,
         diff_prismfrac = snotel_mm - prism_new_mm)

summary(niwot_prismfrac)
##       date               prism_mm        snotel_mm         diff_mm         
##  Min.   :2011-01-01   Min.   : 0.000   Min.   : 0.000   Min.   :-63.69000  
##  1st Qu.:2012-10-01   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: -1.15000  
##  Median :2014-07-02   Median : 0.310   Median : 0.000   Median :  0.00000  
##  Mean   :2014-07-02   Mean   : 2.437   Mean   : 2.393   Mean   : -0.04368  
##  3rd Qu.:2016-04-01   3rd Qu.: 2.710   3rd Qu.: 3.000   3rd Qu.:  0.57000  
##  Max.   :2017-12-31   Max.   :68.220   Max.   :71.000   Max.   : 61.28000  
##                                                                            
##  prism_most_mm     prism_little_mm    prism_new_mm     diff_prismfrac     
##  Min.   : 0.0000   Min.   :0.00000   Min.   : 0.0000   Min.   :-17.33694  
##  1st Qu.: 0.0000   1st Qu.:0.00000   1st Qu.: 0.0000   1st Qu.: -0.32569  
##  Median : 0.2971   Median :0.00806   Median : 0.3458   Median :  0.00000  
##  Mean   : 2.3734   Mean   :0.06335   Mean   : 2.4367   Mean   : -0.04276  
##  3rd Qu.: 2.6420   3rd Qu.:0.07046   3rd Qu.: 2.7180   3rd Qu.:  0.00000  
##  Max.   :66.4463   Max.   :1.77372   Max.   :67.1951   Max.   : 14.45982  
##  NA's   :1                           NA's   :1         NA's   :1
scatter_frac <- ggplot(niwot_prismfrac, aes(x=snotel_mm, y=prism_new_mm)) +
  geom_point() +
  geom_abline(intercept = 0, slope = 1, size=1.5, color="blue")
  
ggplotly(scatter_frac)
rmse(niwot_prismfrac$prism_new_mm, niwot_prismfrac$snotel_mm)
## [1] NA
NSE(niwot_prismfrac$prism_new_mm, niwot_prismfrac$snotel_mm)
## [1] 0.9040468
pbias(niwot_prismfrac$prism_new_mm, niwot_prismfrac$snotel_mm)
## [1] 1.8

Compare prism solar rad to flux solar rad

srad <- solr %>%
  dplyr::select(-1) %>%
  filter(!row_number() %in% c(1:17)) %>%
  replace(.==-9999, NA) %>%
  rename(date = 1,
         prism_w = 2,
         prism_m = 3,
         prism_e = 4,
         gordon_s = 5,
         gordon_n = 6,
         greenlake = 7) %>%
  mutate(date = dmy(date))

niwot_srad <- Niwo %>%
  mutate(date = ymd(date)) %>%
  rename(niwot_flux_mjm2 = 3) %>%
  dplyr::select(-c(watts_per_m2)) %>%
  replace(. == -9999, NA)

## original  
srad_compare <- full_join(srad, niwot_srad, by = 'date') %>%
  dplyr::select(c(date, prism_w, niwot_flux_mjm2)) %>%
  mutate(diff = niwot_flux_mjm2 - prism_w) %>%
  na.omit()

summary(srad_compare)
##       date               prism_w       niwot_flux_mjm2        diff        
##  Min.   :2000-01-01   Min.   : 6.672   Min.   : 0.7053   Min.   :-47.120  
##  1st Qu.:2006-08-01   1st Qu.:24.532   1st Qu.:10.6542   1st Qu.:-21.880  
##  Median :2011-05-22   Median :32.698   Median :15.8284   Median :-16.441  
##  Mean   :2011-01-26   Mean   :33.781   Mean   :16.4250   Mean   :-17.356  
##  3rd Qu.:2016-03-11   3rd Qu.:42.702   3rd Qu.:22.1307   3rd Qu.:-12.148  
##  Max.   :2020-12-30   Max.   :65.126   Max.   :35.0707   Max.   :  5.821
scatter_srad_orig <- ggplot(srad_compare, aes(x=niwot_flux_mjm2, y=prism_w)) +
  geom_point() +
  geom_abline(intercept = 0, slope = 1, size=1.5, color="blue")
  
ggplotly(scatter_srad_orig)
## 1 day shift
srad_shift1day <- srad_compare %>%
  mutate_at(c("prism_w"),list(lead), n = 1) %>%
  na.omit()

scatter_srad_1day <- ggplot(srad_shift1day, aes(x=niwot_flux_mjm2, y=prism_w)) +
  geom_point() +
  geom_abline(intercept = 0, slope = 1, size=1.5, color="blue")
  
ggplotly(scatter_srad_1day)
#scatter_srad_1day

summary(srad_shift1day)
##       date               prism_w       niwot_flux_mjm2        diff        
##  Min.   :2000-01-01   Min.   : 6.672   Min.   : 0.7053   Min.   :-47.120  
##  1st Qu.:2006-08-01   1st Qu.:24.531   1st Qu.:10.6532   1st Qu.:-21.880  
##  Median :2011-05-22   Median :32.707   Median :15.8317   Median :-16.442  
##  Mean   :2011-01-26   Mean   :33.783   Mean   :16.4258   Mean   :-17.357  
##  3rd Qu.:2016-03-10   3rd Qu.:42.702   3rd Qu.:22.1345   3rd Qu.:-12.149  
##  Max.   :2020-12-29   Max.   :65.126   Max.   :35.0707   Max.   :  5.821
rmse(srad_shift1day$prism_w, srad_shift1day$niwot_flux_mjm2)
## [1] 19.71444
pbias(srad_shift1day$prism_w, srad_shift1day$niwot_flux_mjm2)
## [1] 105.7
## shift by percentage
srad_fracshift <- srad_compare %>%
    mutate(prism_most = prism_w * 0.3,
         prism_little = prism_w * 0.7) %>%
  mutate_at(c('prism_most'), list(lead), n = 1) %>%
  mutate(prism_new = prism_most + prism_little,
         diff_prismfrac = niwot_flux_mjm2 - prism_new) %>%
  na.omit()
  
scatter_srad_frac <- ggplot(srad_fracshift, aes(x=niwot_flux_mjm2, y=prism_new)) +
  geom_point() +
  geom_abline(intercept = 0, slope = 1, size=1.5, color="blue")
  
ggplotly(scatter_srad_frac)
#scatter_srad_frac

summary(srad_fracshift)
##       date               prism_w       niwot_flux_mjm2        diff        
##  Min.   :2000-01-01   Min.   : 6.672   Min.   : 0.7053   Min.   :-47.120  
##  1st Qu.:2006-08-01   1st Qu.:24.534   1st Qu.:10.6532   1st Qu.:-21.880  
##  Median :2011-05-22   Median :32.707   Median :15.8317   Median :-16.442  
##  Mean   :2011-01-26   Mean   :33.783   Mean   :16.4258   Mean   :-17.357  
##  3rd Qu.:2016-03-10   3rd Qu.:42.702   3rd Qu.:22.1345   3rd Qu.:-12.149  
##  Max.   :2020-12-29   Max.   :65.126   Max.   :35.0707   Max.   :  5.821  
##    prism_most      prism_little     prism_new      diff_prismfrac   
##  Min.   : 2.002   Min.   : 4.67   Min.   : 7.113   Min.   :-48.055  
##  1st Qu.: 7.359   1st Qu.:17.17   1st Qu.:24.666   1st Qu.:-21.589  
##  Median : 9.812   Median :22.89   Median :33.098   Median :-16.360  
##  Mean   :10.135   Mean   :23.65   Mean   :33.783   Mean   :-17.357  
##  3rd Qu.:12.811   3rd Qu.:29.89   3rd Qu.:42.200   3rd Qu.:-12.443  
##  Max.   :19.538   Max.   :45.59   Max.   :63.675   Max.   :  4.276
rmse(srad_fracshift$prism_new, srad_fracshift$niwot_flux_mjm2)
## [1] 18.74241
pbias(srad_fracshift$prism_new, srad_fracshift$niwot_flux_mjm2)
## [1] 105.7
## bring in daymet
## Daily total radiation (MJ/m2/day) can be calculated as follows: ((srad (W/m2) * dayl (s/day)) / l,000,000)
niwot_daymet <- daym %>%
  filter(!row_number() %in% c(1:7)) %>%
  rename(year = 1,
         doy = 2,
         srad_wm2 = 3) %>%
  mutate(date = as.Date(doy),
         month = month(date),
         day = day(date),
         date = make_date(year, month, day),
         daymet_mjm2 = (srad_wm2 * 86400) / 1000000) %>%
  dplyr::select(-c(year, doy, month, day))
  
niwot_daymet_comp <- full_join(niwot_srad, niwot_daymet, by = 'date') %>%
  dplyr::select(c(date, niwot_flux_mjm2, daymet_mjm2)) %>%
  na.omit()
  
scatter_srad_daymet <- ggplot(niwot_daymet_comp, aes(x=niwot_flux_mjm2, y=daymet_mjm2)) +
  geom_point() +
  geom_abline(intercept = 0, slope = 1, size=1.5, color="blue")
  
ggplotly(scatter_srad_daymet)
#scatter_srad_frac

#summary(srad_fracshift)
rmse(niwot_daymet_comp$daymet_mjm2, niwot_daymet_comp$niwot_flux_mjm2)
## [1] 22.91598